using System.IO;

namespace Curriculum.Business
{
	/// <summary>
	/// Summary description for ManejadorIdAntecedentePersistente.
	/// </summary>
	public class ManejadorIdAntecedentePersistente
	{
		private string IdAntecedentoPersistente;
		private static ManejadorIdAntecedentePersistente instancia = null;

		private ManejadorIdAntecedentePersistente()
		{
			LeerNroAntecedentePersistente();
		}

		public static ManejadorIdAntecedentePersistente GetInstancia()
		{
			if (instancia == null)
			{
				instancia = new ManejadorIdAntecedentePersistente();
			}
			return instancia;
		}

		private void LeerNroAntecedentePersistente()
		{
			string pathCompleto = 
				string.Format("{0}{1}",
				System.Configuration.ConfigurationSettings.AppSettings[Constants.APP_DIR_TRABAJO],
				Constants.ARCHIVO_ID_ANTECEDENTE_PERSISTENTE);

			if (!File.Exists(pathCompleto))
			{
				FileStream nuevoArchivo = new FileStream(pathCompleto, FileMode.CreateNew);
								
				// Escribo en el archivo el numero 1.
				nuevoArchivo.Write(new byte[]{byte.Parse("1")}, 0, 1);

				IdAntecedentoPersistente = "1";
				nuevoArchivo.Close();
			}
			else
			{
				TextReader file = new StreamReader(pathCompleto);
				IdAntecedentoPersistente = file.ReadToEnd();
				file.Close();
			}						
		}

		public string GetProximoIdAntecedentePersistente()
		{
			int idAA = int.Parse(IdAntecedentoPersistente);
			IdAntecedentoPersistente = (idAA+1).ToString();
			
			return IdAntecedentoPersistente;
		}

		public void ConfirmarIdsUsados()
		{
			string dir = System.Configuration.ConfigurationSettings.AppSettings[Constants.APP_DIR_TRABAJO];
			TextWriter file = new StreamWriter(dir + Constants.ARCHIVO_ID_ANTECEDENTE_PERSISTENTE);
			file.Write(IdAntecedentoPersistente);
			file.Close();
		}

	}
}
